import os


def merge_sql_files(directory_path, output_file='all_test.sql'):
    """
    合并指定目录下所有的.sql文件到一个输出文件中

    :param directory_path: 包含.sql文件的目录路径
    :param output_file: 输出的合并文件名称
    """
    # 确保目录路径存在
    if not os.path.isdir(directory_path):
        print(f"错误：目录 '{directory_path}' 不存在")
        return

    # 获取目录下所有的.sql文件
    sql_files = [f for f in os.listdir(directory_path)
                 if f.endswith('.sql') and os.path.isfile(os.path.join(directory_path, f))]

    if not sql_files:
        print(f"警告：目录 '{directory_path}' 中没有找到.sql文件")
        return

    # 按文件名排序
    sql_files.sort()

    # 打开输出文件
    with open(output_file, 'w', encoding='utf-8') as outfile:
        # 写入合并注释头
        outfile.write(f"-- 合并的SQL文件，来源目录: {directory_path}\n")
        outfile.write(f"-- 共合并了 {len(sql_files)} 个.sql文件\n\n")

        # 逐个读取并写入.sql文件内容
        for sql_file in sql_files:
            file_path = os.path.join(directory_path, sql_file)

            # 写入文件分隔注释
            outfile.write(f"\n-- 文件: {sql_file} --\n\n")

            # 读取并写入文件内容
            with open(file_path, 'r', encoding='utf-8') as infile:
                outfile.write(infile.read())

    print(f"成功合并 {len(sql_files)} 个.sql文件到 '{output_file}'")


# 使用示例
if __name__ == "__main__":
    # 替换为你的实际目录路径
    sql_directory = "/Users/caozitong/Downloads/qizcloud/sql数据"
    merge_sql_files(sql_directory)
